package com.gz.gzmybatis.sqlsession;

import java.lang.reflect.Proxy;
import java.util.List;

/**
 * 搭建Configuration(连接)和Execute之间的桥梁
 */
public class GzSqlSession {
    //执行器
    private GzExecutor gzExecutor=new GzExecutor();

    //配置
    private GzConfiguration gzConfiguration=new GzConfiguration();

    //编写方法selectOne返回一条记录 (这个类可以设置很多方法，这里就实现一个)
    public <T> T selectOne(String sql,Object parameter){
        return gzExecutor.query(sql,parameter);
    }

    //返回代理对象 这里clazz是MonsterMapper.class
    public <T> T getMapper(Class<T> clazz){
        return (T) Proxy.newProxyInstance(clazz.getClassLoader(),new Class[]{clazz},
                new GzMapperProxy(gzConfiguration,this,clazz));
    }
}
